#include <iostream>
#include <cstring>

using namespace std;

const int N = 21;

int n;
int e[N][N];

int f[(1 << N)][N];

int main()
{
	cin >> n;
	for(int i = 0; i < n; i++)
		for(int j = 0; j < n; j++)
			cin >> e[i][j];
			
	memset(f, 0x3f, sizeof f);
	f[1][0] = 0;
	
	for(int st = 2; st < (1 << n); st++)
	{
		for(int i = 0; i < n; i++)
		{
			if((st >> i) & 1) 
			{
				for(int j = 0; j < n; j++)
				{
					if((st >> j) & 1)
					{
						f[st][i] = min(f[st][i], f[st ^ (1 << i)][j] + e[j][i]);
					}
				}
			}
		}
	}
	
	int ret = 0x3f3f3f3f;
	for(int i = 0; i < n; i++)
		ret = min(ret, f[(1 << n) - 1][i] + e[i][0]);
	cout << ret << endl;
		
	return 0;
}














